#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
微信机器人主程序入口
"""

import sys
import os
import argparse

# 添加src目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))

from src.core import WeChatRobot
from src.config import ConfigManager


def main():
    """主函数"""
    parser = argparse.ArgumentParser(description='微信机器人工具')
    parser.add_argument('--config', '-c', default='config/robot.yaml', 
                       help='配置文件路径')
    parser.add_argument('--test-images', action='store_true',
                       help='测试图像识别')
    parser.add_argument('--debug', action='store_true',
                       help='调试模式')
    
    args = parser.parse_args()
    
    try:
        # 初始化配置管理器
        config_manager = ConfigManager(args.config)
        
        # 创建机器人实例
        robot = WeChatRobot(config_manager)
        
        if args.test_images:
            # 测试图像识别
            print("🧪 开始测试图像识别...")
            results = robot.test_images()
            
            success_count = sum(1 for success in results.values() if success)
            total_count = len(results)
            success_rate = success_count / total_count * 100 if total_count > 0 else 0
            
            print(f"\n📊 测试完成: {success_count}/{total_count} ({success_rate:.1f}%)")
            
            if success_rate < 80:
                print("⚠️ 图像识别成功率较低，建议检查图像文件")
                return False
            
        else:
            # 运行机器人
            print("🤖 启动微信机器人...")
            
            if robot.config_manager.get_data_source_config()['type'] == 'database':
                # 测试数据库连接
                if not robot.database_manager.test_connection():
                    print("❌ 数据库连接失败，请检查配置")
                    return False
                else:
                    print("✅ 数据库连接成功")
            elif robot.config_manager.get_data_source_config()['type'] == 'csv':
                # 测试CSV文件是否存在
                if not robot.csv_utils.test_csv_file():
                    print("❌ CSV文件不存在，请检查配置")
                    return False
                else:
                    print("✅ CSV文件存在")
            else:
                print("❌ 数据源类型不支持，请检查配置")
                return False
            
            if args.debug:
                print("🐛 调试模式：拍摄截图")
                screenshot_path = robot.take_debug_screenshot()
                print(f"📸 截图已保存: {screenshot_path}")
            
            # 运行机器人
            success = robot.run()
            
            if success:
                print("✅ 机器人执行成功")
            else:
                print("❌ 机器人执行失败")
            
            return success
            
    except KeyboardInterrupt:
        print("\n⚠️ 用户中断执行")
        return False
    except Exception as e:
        print(f"❌ 发生错误: {e}")
        if args.debug:
            import traceback
            traceback.print_exc()
        return False


if __name__ == '__main__':
    success = main()
    sys.exit(0 if success else 1)
